Passed
Push — task/relative-resources ( d91573...a75d4d )
by Tristan
04:18
created

routes.ts ➔ hrJobReview   A

Complexity

Conditions 1

Size

Total Lines 2
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
function stripTrailingSlash(str: string): string {
2
  return str.endsWith("/") ? str.slice(0, -1) : str;
3
}
4
5
export function baseUrl(): string {
6
  const base = document.querySelector("meta[name='base-url']");
7
  if (base !== null) {
8
    return stripTrailingSlash(base.getAttribute("content") ?? "");
9
  }
10
  return "";
11
}
12
13
export function basePathname(): string {
14
  return (new URL(baseUrl())).pathname;
15
}
16
17
export function baseApiUrl(version = 1): string {
18
  return `${baseUrl()}/api/v${version}`;
19
}
20
21
/**
22
 *
23
 * @param imgFile The name of the img file, not inluding the /images/ path.
24
 */
25
export function imageUrl(imgFile: string): string {
26
  return `${baseUrl()}/images/${imgFile}`;
27
}
28
29
/**
30
 * Removes the base url or base pathname if the given url starts with them.
31
 * @param url
32
 */
33
export function removeBaseUrl(url: string): string {
34
  const base = baseUrl();
35
  if (url.startsWith(base)) {
36
    return url.substr(base.length);
37
  }
38
  const basePath = basePathname();
39
  if (url.startsWith(basePath)) {
40
    return url.substr(basePath.length);
41
  }
42
  return url;
43
}
44
45
function applicationShow(
46
  locale: string,
47
  prefix: string,
48
  applicationId: number,
49
  jobId: number,
50
): string {
51
  return `${baseUrl()}/${locale}/${prefix}/jobs/${jobId}/applications/${applicationId}`;
52
}
53
54
function applicantShow(
55
  locale: string,
56
  prefix: string,
57
  applicantId: number,
58
  jobId: number,
59
): string {
60
  return `${baseUrl()}/${locale}/${prefix}/jobs/${jobId}/applicants/${applicantId}`;
61
}
62
63
export function managerApplicationShow(
64
  locale: string,
65
  applicationId: number,
66
  jobId: number,
67
): string {
68
  return applicationShow(locale, "manager", applicationId, jobId);
69
}
70
71
export function managerApplicantShow(
72
  locale: string,
73
  applicantId: number,
74
  jobId: number,
75
): string {
76
  return applicantShow(locale, "manager", applicantId, jobId);
77
}
78
79
export function managerEditProfile(locale: string): string {
80
  return `${baseUrl()}/${locale}/manager/profile`;
81
}
82
83
export function managerJobIndex(locale: string): string {
84
  return `${baseUrl()}/${locale}/manager/jobs`;
85
}
86
87
export function managerJobSummary(locale: string, jobId: number): string {
88
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}`;
89
}
90
91
export function managerJobPreview(locale: string, jobId: number): string {
92
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/preview`;
93
}
94
95
export function managerJobApplications(locale: string, jobId: number): string {
96
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/applications`;
97
}
98
99
export function managerScreeningPlan(locale: string, jobId: number): string {
100
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/assessment-plan`;
101
}
102
103
export function applicationReviewUpdate(
104
  locale: string,
105
  applicationId: number,
106
): string {
107
  return `${baseApiUrl()}/applications/${applicationId}/review`;
108
}
109
110
export function jobBuilderIntro(locale: string, jobId?: number): string {
111
  if (jobId) {
112
    return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/intro`;
113
  }
114
  return `${baseUrl()}/${locale}/manager/job-builder/intro`;
115
}
116
117
export function jobBuilderDetails(locale: string, jobId: number): string {
118
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/details`;
119
}
120
121
export function jobBuilderEnv(locale: string, jobId: number): string {
122
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/environment`;
123
}
124
125
export function jobBuilderImpact(locale: string, jobId: number): string {
126
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/impact`;
127
}
128
129
export function jobBuilderTasks(locale: string, jobId: number): string {
130
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/tasks`;
131
}
132
133
export function jobBuilderSkills(locale: string, jobId: number): string {
134
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/skills`;
135
}
136
137
export function jobBuilderReview(locale: string, jobId: number): string {
138
  return `${baseUrl()}/${locale}/manager/jobs/${jobId}/builder/review`;
139
}
140
141
type FaqSection = "manager-who";
142
143
export function managerFaq(locale: string, faqSection?: FaqSection): string {
144
  const base = `${baseUrl()}/${locale}/manager/faq`;
145
  if (faqSection) {
146
    return `${base}#${faqSection}`;
147
  }
148
  return base;
149
}
150
151
export function hrJobIndex(locale: string): string {
152
  return `${baseUrl()}/${locale}/hr/jobs`;
153
}
154
export function hrJobSummary(locale: string, jobId: number): string {
155
  return `${baseUrl()}/${locale}/hr/jobs/${jobId}`;
156
}
157
export function hrJobReview(locale: string, jobId: number): string {
158
  return `${baseUrl()}/${locale}/hr/jobs/${jobId}/review`;
159
}
160
export function hrJobPreview(locale: string, jobId: number): string {
161
  return `${baseUrl()}/${locale}/hr/jobs/${jobId}/preview`;
162
}
163
export function hrScreeningPlan(locale: string, jobId: number): string {
164
  return `${baseUrl()}/${locale}/hr/jobs/${jobId}/assessment-plan`;
165
}
166
export function hrJobApplications(locale: string, jobId: number): string {
167
  return `${baseUrl()}/${locale}/hr/jobs/${jobId}/applications`;
168
}
169
export const hrApplicationShow = (
170
  locale: string,
171
  applicationId: number,
172
  jobId: number,
173
): string => applicationShow(locale, "hr", applicationId, jobId);
174
export const hrApplicantShow = (
175
  locale: string,
176
  applicantId: number,
177
  jobId: number,
178
): string => applicantShow(locale, "hr", applicantId, jobId);
179
180
export function accountSettings(locale: string): string {
181
  return `${baseUrl()}/${locale}/settings`;
182
}
183